package com.aizuda.boot.modules.business.performancePlan.dto;

import com.aizuda.boot.modules.common.constant.enums.PaymentIntervalTypeEnum;
import com.aizuda.boot.modules.common.constant.enums.PaymentTimeTypeEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDate;

/**
 * 付款计划明细项 DTO
 */
@Data
@Schema(description = "付款计划明细项")
public class PaymentPlanItemDTO {

    @Schema(description = "排序")
    private Integer sort;

    @Schema(description = "履约类型（0=无需付款，1=需付款）")
    private Integer fulfillmentType;

    @Schema(description = "履约事项")
    private String fulfillmentItem;

    @Schema(description = "是否需要发票（0=无发票，1=有发票）")
    private Integer needInvoice;

    @Schema(description = "付款时间类型（固定付款日期、无固定日期、履约完成后）")
    private PaymentTimeTypeEnum paymentTimeType;

    @Schema(description = "付款时间（若为固定时间类型）")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate paymentDate;

    @Schema(description = "付款时间间隔（用于周期计划）")
    private Integer paymentInterval;

    @Schema(description = "付款时间间隔类型（自然日、工作日）")
    private PaymentIntervalTypeEnum paymentIntervalType;

    @Schema(description = "付款金额")
    private Integer paymentAmount;

    @Schema(description = "货币类型")
    private String currencyType;

    @Schema(description = "交易方ID")
    private Integer partnerId;

    @Schema(description = "付款对象")
    private String paymentReceiverName;

    @Schema(description = "付款对象详情（JSON数据）")
    private String paymentReceiverInfo;

    @Schema(description = "银行账号")
    private String bankAccount;

    @Schema(description = "开户行名称")
    private String bankName;

    @Schema(description = "账户名称")
    private String accountName;

    @Schema(description = "付款说明")
    private String paymentNote;
}
